﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Registro.Compras.Api.Models;
using Registro.Compras.Data.Business;
using Registro.Compras.Data.Entities;
using System.Web.Http.Cors;

namespace Registro.Compras.Api.Controllers
{
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class ReferenciaComprobanteController : ApiController
    {
        // GET api/<controller>
        public IEnumerable<ReferenciaComprobanteModel> Get()
        {
            //return new string[] { "value1", "value2" };
            return ReferenciaComprobanteBusiness.GetListByFilter("").Select(
                t => new ReferenciaComprobanteModel
                {
                    Id = t.Id,
                    Fecha = t.Fecha,
                    Tabla10Id = t.Tabla10Id,
                    Tabla10Model = new Tabla10Model{
                        Id = t.Tabla10.Id,
                        Descripcion = t.Tabla10.Descripcion,
                    },
                    Serie = t.Serie,
                    N_Comprobante = t.N_Comprobante,
                    Base1Id = t.Base1Id,
                    Base1Model = new Base1Model
                    {
                        Id = t.Base1.Id,
                        FechaEmision = t.Base1.FechaEmision,
                        Serie = t.Serie,
                        N_Comprobante = t.Base1.N_Comprobante,
                        DescripcionM = t.Base1.DescripcionM,
                    },

                });
        }

        // GET api/<controller>/5
        public ReferenciaComprobanteModel Get(int id)
        {
            ReferenciaComprobante t = ReferenciaComprobanteBusiness.GetById(id);
            return new ReferenciaComprobanteModel
            {
                Id = t.Id,
                Fecha = t.Fecha,
                Tabla10Id = t.Tabla10Id,
                Serie = t.Serie,
                N_Comprobante = t.N_Comprobante,
                Base1Id = t.Base1Id,
            };
        }

        // POST api/<controller>
        public ReferenciaComprobanteModel Post([FromBody]ReferenciaComprobanteModel model)
        {
            ReferenciaComprobante t = ReferenciaComprobanteBusiness.Create(new ReferenciaComprobante
            {

                Fecha = model.Fecha,
                Tabla10Id = model.Tabla10Id,
                Serie = model.Serie,
                N_Comprobante = model.N_Comprobante,
                Base1Id = model.Base1Id,
            });
            return new ReferenciaComprobanteModel
            {
                Id = t.Id,
                Fecha = t.Fecha,
                Tabla10Id = t.Tabla10Id,
                Tabla10Model = new Tabla10Model
                {
                    Id = t.Tabla10.Id,
                    Descripcion = t.Tabla10.Descripcion,
                },
                Serie = t.Serie,
                N_Comprobante = t.N_Comprobante,
                Base1Id = t.Base1Id,
                Base1Model = new Base1Model
                {
                    Id = t.Base1.Id,
                    FechaEmision = t.Base1.FechaEmision,
                    Serie = t.Serie,
                    N_Comprobante = t.Base1.N_Comprobante,
                    DescripcionM = t.Base1.DescripcionM,
                },
            };
        }

        // PUT api/<controller>/5
        public ReferenciaComprobanteModel Put(int id, [FromBody]ReferenciaComprobanteModel model)
        {
            ReferenciaComprobante t = ReferenciaComprobanteBusiness.Update(new ReferenciaComprobante
            {
                Id = id,
                Fecha = model.Fecha,
                Tabla10Id = model.Tabla10Id,
                Serie = model.Serie,
                N_Comprobante = model.N_Comprobante,
                Base1Id = model.Base1Id,
            });
            return new ReferenciaComprobanteModel
            {
                Id = t.Id,
                Fecha = t.Fecha,
                Tabla10Id = t.Tabla10Id,
                Tabla10Model = new Tabla10Model
                {
                    Id = t.Tabla10.Id,
                    Descripcion = t.Tabla10.Descripcion,
                },
                Serie = t.Serie,
                N_Comprobante = t.N_Comprobante,
                Base1Id = t.Base1Id,
                Base1Model = new Base1Model
                {
                    Id = t.Base1.Id,
                    FechaEmision = t.Base1.FechaEmision,
                    Serie = t.Serie,
                    N_Comprobante = t.Base1.N_Comprobante,
                    DescripcionM = t.Base1.DescripcionM,
                },
            };
        }

        // DELETE api/<controller>/5
        public void Delete(int id)
        {
            ReferenciaComprobanteBusiness.Delete(id);
        }
    }
}